package com.sourceQ.system.domain.message.sms;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.sourceQ.common.core.web.domain.UpdatableEntity;
import lombok.*;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.Map;

/**
 * 短信日志
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName(value = "sys_sms_log")
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SysSmsLog extends UpdatableEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 编号
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 短信渠道编号
     */
    private Long channelId;

    /**
     * 短信渠道编码
     */
    private String channelCode;

    /**
     * 模板编号
     */
    private Long templateId;

    /**
     * 模板编码
     */
    private String templateCode;

    /**
     * 短信类型
     */
    private String templateType;

    /**
     * 短信内容
     */
    private String templateContent;

    /**
     * 短信参数
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Map<String, Object> templateParams;

    /**
     * 短信 API 的模板编号
     */
    private String apiTemplateId;

    /**
     * 手机号
     */
    private String mobile;

    /**
     * 用户编号
     */
    private Long userId;

    /**
     * 用户类型
     */
    private String userType;

    /**
     * 发送状态
     */
    private String sendStatus;

    /**
     * 发送时间
     */
    private LocalDateTime sendTime;

    /**
     * 短信 API 发送结果的编码
     */
    private String apiSendCode;

    /**
     * 短信 API 发送失败的提示
     */
    private String apiSendMsg;

    /**
     * 短信 API 发送返回的唯一请求 ID
     */
    private String apiRequestId;

    /**
     * 短信 API 发送返回的序号
     */
    private String apiSerialNo;

    /**
     * 接收状态
     */
    private String receiveStatus;

    /**
     * 接收时间
     */
    private LocalDateTime receiveTime;

    /**
     * API 接收结果的编码
     */
    private String apiReceiveCode;

    /**
     * API 接收结果的说明
     */
    private String apiReceiveMsg;

    /**
     * 是否删除 0:存在；2：删除
     */
    private String delFlag;

}
